﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class Admin_Caja: GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    private Cajas oCaja
    {
        get
        {
            return (Cajas)Session["oCaja"];
        }
        set
        {
            Session["oCaja"] = value;
        }
    }

    private string scriptSession
    {
        get
        {
            return (string)Session["scriptSession"];
        }
        set
        {
            Session["scriptSession"] = value;
        }
    }

    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                lblAccion.Text = "";             
                oCaja = new Cajas();
                chkDetalle.Visible = false;
                if (Request.QueryString["Accion"] != null)
                {
                    int iAccion = Convert.ToInt16(Request.QueryString["Accion"]);
                    if (iAccion == 2)
                    {
                        oCaja.Id_Caja = Convert.ToInt64(Request.QueryString["Id_Caja"]);
                        BMCajas bmCajas = new BMCajas(Connection);
                        oCaja = bmCajas.BMCajasGetOneById(oCaja);
                        TraeCaja(oCaja);
                        if (oCaja.Estado == 0)
                        {
                            Session["Accion"] = iAccion;
                            btnCerrarCaja.Enabled = false;
                            lblAccion.Text = "Ver Caja";
                            trConcepto1.Visible = false;
                            trConcepto2.Visible = false;
                            trConcepto3.Visible = false;
                            trConcepto4.Visible = false;
                        }
                        lblCaja.Text = oCaja.Id_Caja.ToString();                    
                    }
                }
                else
                {
                    VerificaCaja();
                }
                ActualizaGrilla();
                CargarCCostos(1);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbEgresos_CheckedChanged
    protected void rdbEgresos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbEgresos.Checked)
            {
                rdbIngresos.Checked = false;
                chkDetalle.Visible = false;
                trCCostos.Visible = true;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbIngresos_CheckedChanged
    protected void rdbIngresos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbIngresos.Checked)
            {
                rdbEgresos.Checked = false;
                chkDetalle.Visible = true;
                trCCostos.Visible = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_RowCancelingEdit
    /// <Summary>
    /// Responde a Cancelar en Edición de la grilla
    /// CBendayan 29/05/2008
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        try
        {
            gvCaja.EditIndex = -1;
            ActualizaGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_RowDataBound
    /// <Summary>
    /// Boundeo de la grilla
    /// CBendayan 29/05/2008 
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            Label label;
            LinkButton link;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (oCaja.Estado == 0)
                {
                    link = (LinkButton)e.Row.Cells[5].FindControl("lnkEliminar");
                    link.Visible = false;
                    e.Row.Cells[4].Enabled = false;
                }
                else
                {
                    label = (Label)e.Row.Cells[1].FindControl("lOperacion");
                    if (label.Text != "")
                    {
                        if (label.Text == "Compra" || label.Text == "Venta")
                        {
                            link = (LinkButton)e.Row.Cells[5].FindControl("lnkEliminar");
                            link.Visible = false;
                            e.Row.Cells[4].Enabled = false;
                        }
                    }

                    label = (Label)e.Row.Cells[0].FindControl("lIdConcepto");
                    if (label.Text == "0")
                    {
                            link = (LinkButton)e.Row.Cells[5].FindControl("lnkEliminar");
                            link.Visible = false;
                            e.Row.Cells[4].Enabled = false;
                    }

                }
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_RowDeleting
    /// <Summary>
    /// Responde a Eliminar en edición de la grilla
    /// CBendayan 29/05/2008
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            ItemCaja itemCaja = new ItemCaja();
            List<ItemCaja> listaCaja = new List<ItemCaja>();
            listaCaja= (List<ItemCaja>)Session["listaCaja"];
            itemCaja.Id_Tipo = listaCaja[e.RowIndex].Id_Tipo;
            if (itemCaja.Id_Tipo == 1)
            {
                EliminaEgreso(listaCaja[e.RowIndex]);
            }
            else
            {
                EliminaIngreso(listaCaja[e.RowIndex]);
            }
            // Param param = new Param();
            oCaja.Id_Caja = Convert.ToInt16(lblCaja.Text.Trim());
            TraeCaja(oCaja);
            ActualizaGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_RowEditing
    /// <Summary>
    /// Responde a Modificar en Edición de la grilla
    /// CBendayan 29/05/2008
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_RowEditing(object sender, GridViewEditEventArgs e)
    {
        try
        {
            gvCaja.EditIndex = e.NewEditIndex;
            ActualizaGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_RowUpdating
    /// <Summary>
    /// Responde a Actualizar en Edición de la grilla
    /// CBendayan 29/05/2008 
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        try
        {
            List<ItemCaja> listaCaja = new List<ItemCaja>();
            listaCaja = (List<ItemCaja>)Session["listaCaja"];
            TextBox txtMontoTemp = new TextBox();
            txtMontoTemp = (TextBox)gvCaja.Rows[e.RowIndex].FindControl("tMonto");
            listaCaja[e.RowIndex].Monto = Convert.ToDecimal(txtMontoTemp.Text.Trim());
            if (listaCaja[e.RowIndex].Monto > 0)
            {
                if (listaCaja[e.RowIndex].Id_Tipo == 1)
                {
                    GuardaEgreso(listaCaja[e.RowIndex]);
                }
                else
                {
                    GuardaIngreso(listaCaja[e.RowIndex]);
                }
                // Param param = new Param();
                oCaja.Id_Caja = Convert.ToInt16(lblCaja.Text.Trim());
                TraeCaja(oCaja);
                gvCaja.EditIndex = -1;
                ActualizaGrilla();
            }
            else
            {
                // muestra mensje "No puede agregar un Concepto con Monto Cero"
                mpeMonto.Show();
            }  

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCaja_PageIndexChanging
    /// <Summary>
    /// CBendayan 29/05/2008
    /// </Summary>
    /// <returns></returns>
    protected void gvCaja_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvCaja.PageIndex = e.NewPageIndex;
            ActualizaGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnBuscarConcepto_Click
    /// <summary>
    /// Responde al boton Buscar Concepto
    /// CBendayan 29/05/2008
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnBuscarConcepto_Click(object sender, EventArgs e)
    {
        try
        {
            Conceptos concepto = new Conceptos();
            lblAccion.Text = "Agregando Concepto";

            txtIdConcepto.Text = "";
            txtConcepto.Text = "";
            concepto.Id_Tipo = 0;
            if (rdbEgresos.Checked)
            {
                concepto.Id_Tipo = 1;
                Session["Tipo"] = "Egresos";
            }
            if (rdbIngresos.Checked)
            {
                concepto.Id_Tipo = 2;
                Session["Tipo"] = "Ingresos";
            }
            
            List<Conceptos> listaConceptos = new List<Conceptos>();
            BMConceptos bmConceptos = new BMConceptos(Connection);
            listaConceptos = bmConceptos.BMConceptosSearch(concepto);
            Session["listaConceptos"] = listaConceptos;
            BuscarConcepto();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region txtIdConcepto_TextChanged
    /// <summary>
    /// CBendayan 29/05/2008
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void txtIdConcepto_TextChanged(object sender, EventArgs e)
    {
        try
        {
            lblAccion.Text = "Agregando Concepto";
            BuscarConcepto();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    #endregion

    #region btnAgregar_Click
    /// Agrega Concepto ( Ingreso o Egreso)
    /// Actualiza Grilla de Caja
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        try
        {
            int iOk = 0;
            //Param param = new Param();
            //param = (Param)Session["Param"];

            if (rdbEgresos.Checked)
            {
                Egresos egreso = new Egresos();
                BMEgresos bmEgresos = new BMEgresos(Connection);

                egreso = bmEgresos.BMEgresosGetNext();
                // Deshidratación de controles de concepto
                if (!string.IsNullOrEmpty(txtIdConcepto.Text))
                {
                    egreso.Id_Concepto = Convert.ToInt16(txtIdConcepto.Text.Trim());
                }
                if (!string.IsNullOrEmpty(txtConcepto.Text))
                {
                    egreso.Concepto = txtConcepto.Text.Trim();
                }
                if (!string.IsNullOrEmpty(txtMonto.Text))
                {
                    egreso.Monto = Convert.ToDecimal(txtMonto.Text.Trim());
                }
                egreso.Observaciones = txtObservaciones.Text.Trim();
                egreso.Id_Usuario = 1; // usuarioLogueado.Id_Usuario;
                string sFecha = DateTime.Today.ToShortDateString();

                egreso.Fecha = Convert.ToDateTime(sFecha);
                egreso.Id_Caja = Convert.ToInt16(lblCaja.Text.Trim());
                if (egreso.Monto > 0)
                {
                    bmEgresos.BMEgresosInsert(egreso);
                    iOk = 1;
                }
                egreso = null;
                bmEgresos = null;
            }

            if (rdbIngresos.Checked)
            {
                Ingresos ingreso = new Ingresos();
                BMIngresos bmIngresos = new BMIngresos(Connection);

                ingreso = bmIngresos.BMIngresosGetNext();
                // Deshidratación de controles de concepto
                if (!string.IsNullOrEmpty(txtIdConcepto.Text))
                {
                    ingreso.Id_Concepto = Convert.ToInt16(txtIdConcepto.Text.Trim());
                }
                if (!string.IsNullOrEmpty(txtConcepto.Text))
                {
                    ingreso.Concepto = txtConcepto.Text.Trim();
                }
                if (!string.IsNullOrEmpty(txtMonto.Text))
                {
                    ingreso.Monto = Convert.ToDecimal(txtMonto.Text.Trim());
                }
                ingreso.Observaciones = txtObservaciones.Text.Trim();
                ingreso.Id_Usuario = 1; // usuarioLogueado.Id_Usuario;
                ingreso.Fecha = DateTime.Now.Date;
                ingreso.Id_Caja = Convert.ToInt16(lblCaja.Text.Trim());
                if (ingreso.Monto > 0)
                {
                    bmIngresos.BMIngresosInsert(ingreso);
                    iOk = 1;
                }
                Session["Ingreso"] = ingreso;
                bmIngresos = null;
            }

            if (iOk > 0)
            {
                if (!chkDetalle.Checked)
                {
                    // Limpia los controles
                    txtIdConcepto.Text = "";
                    txtConcepto.Text = "";
                    txtMonto.Text = "";
                    txtObservaciones.Text = "";
                    lblAccion.Text = "Concepto Agregado";

                    // Actualiza Grilla de Caja
                    oCaja.Id_Caja = Convert.ToInt16(lblCaja.Text.Trim());
                    oCaja.Id_Usuario = UsuarioActual().Id_Usuario;
                    TraeCaja(oCaja);
                    ActualizaGrilla();
                }
            }
            else
            {
                // muestra mensje "No puede agregar un Concepto con Monto Cero"
                mpeMonto.Show();
            }
            if (chkDetalle.Checked)
            {
                Session["Accion"] = 1;
                Response.Redirect("DetalleIngreso.aspx", false);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
       
    }
    #endregion

    #region btnCerrarCaja_Click
    protected void btnCerrarCaja_Click(object sender, EventArgs e)
    {
        try
        {
            //param.Id_Param = 1;
            //BMParam bmParam = new BMParam();
            //param = bmParam.BMParamGetOne(param);
            oCaja.Id_Caja = oCaja.Id_Caja;
            oCaja.Fecha = DateTime.Now.Date;
            oCaja.Total = Convert.ToDecimal(txtTotal.Text.Trim());
            Session["Caja"] = oCaja;
            Response.Redirect("~/Admin/CierreCaja.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("~/Seguridad/Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region CargaConceptos
    public void CargaConceptos()
    {
        try
        {
            Conceptos concepto = new Conceptos();
            lblAccion.Text = "Agregando Concepto";

            concepto.Id_Tipo = 0;
            if (rdbEgresos.Checked)
            {
                concepto.Id_Tipo = 1;
                Session["Tipo"] = "Egresos";
            }
            if (rdbIngresos.Checked)
            {
                concepto.Id_Tipo = 2;
                Session["Tipo"] = "Ingresos";
            }

            List<Conceptos> listaConceptos = new List<Conceptos>();
            BMConceptos bmConceptos = new BMConceptos(Connection);
            listaConceptos = bmConceptos.BMConceptosSearch(concepto);
            Session["listaConceptos"] = listaConceptos;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region VerificaCaja
    public void VerificaCaja()
    {
        try
        {
            oCaja.Id_Usuario = UsuarioActual().Id_Usuario;
            BMCajas bmCajas = new BMCajas(Connection);
            oCaja = bmCajas.BMCajasAbiertaByUsuario(oCaja);
            if (oCaja.Id_Caja > 0)
            {
                TraeCaja(oCaja);
            }
            else
            {
                oCaja = new Cajas();
                oCaja.Id_Usuario = UsuarioActual().Id_Usuario;
                oCaja.Fecha = DateTime.Now.Date;
                AbreCaja(oCaja);
            }
            lblCaja.Text = oCaja.Id_Caja.ToString();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region TraeCaja
    public void TraeCaja(Cajas oCaja)
    {
        try
        {
            /// Carga lista items de Caja
            ItemCaja itemCaja = new ItemCaja();
            List<ItemCaja> listaCaja = new List<ItemCaja>();
            BMItemCaja bmItemCaja = new BMItemCaja(Connection);
            itemCaja.Id_Caja = oCaja.Id_Caja;
            listaCaja = bmItemCaja.BMlistaCaja(itemCaja);

            // Busca si hay pase como Origen
            if (oCaja.PaseCaja > 0)
            {
                itemCaja = new ItemCaja();
                itemCaja.Concepto = "Pase a Caja " + oCaja.PaseCaja.ToString();
                itemCaja.Monto = oCaja.Total;
                listaCaja.Add(itemCaja);
            }

            // Buscar si hay pase como Destino
            BMPaseCaja bmPaseCaja = new BMPaseCaja(Connection);
            List<PaseCaja> listaPases = new List<PaseCaja>();
            PaseCaja pase = new PaseCaja();
            pase.CajaDestino = oCaja.Id_Caja;
            listaPases = bmPaseCaja.BMPaseCajaGetAllByDestino(pase);
            if (listaPases.Count > 0)
            {
                foreach (PaseCaja oPase in listaPases)
                {
                    itemCaja = new ItemCaja();
                    itemCaja.Concepto = "Pase de Caja " + oPase.CajaOrigen.ToString();
                    itemCaja.Monto = oPase.Total;
                    listaCaja.Add(itemCaja);
                }
            }
            
            Session["listaCaja"] = listaCaja;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region AbreCaja
    public void AbreCaja(Cajas oCaja)
    {
        try
        {
            /// Abre caja con lista de items de caja vacía
            List<ItemCaja> listaCaja = new List<ItemCaja>();
            Session["listaCaja"] = listaCaja;
            BMCajas bmCajas = new BMCajas(Connection);
            oCaja.UsuarioLog = usuario.Login;
            bmCajas.BMCajasInsertApertura(oCaja);
            oCaja = bmCajas.BMCajasAbiertaByUsuario(oCaja);

            /// Da la oportunidad de cargar monto de apertura de caja
            Session["Caja"] = oCaja;
            Response.Redirect("~/Admin/CierreCaja.aspx", false);            
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region ActualizaGrilla
    public void ActualizaGrilla()
    {
        try
        {
            List<ItemCaja> listaCaja = new List<ItemCaja>();
            listaCaja = (List<ItemCaja>)Session["listaCaja"];
            gvCaja.DataSource = listaCaja;
            gvCaja.DataBind();

            decimal dTotal = 0;
            if (listaCaja != null)
            {
                if (listaCaja.Count > 0)
                {
                    foreach (ItemCaja item in listaCaja)
                    {
                        switch (item.Id_Tipo)
                        {
                            case 1: // Egreso
                                dTotal = dTotal - Convert.ToDecimal(item.Monto);
                                oCaja.Efectivo = oCaja.Efectivo - item.Monto;
                                oCaja.Total = oCaja.Total - item.Monto;
                                break;
                            case 2: // Ingreso
                                dTotal = dTotal + Convert.ToDecimal(item.Monto);
                                oCaja.Efectivo = oCaja.Efectivo + item.Monto;
                                oCaja.Total = oCaja.Total + item.Monto;
                                break;
                            case 3: // Compra
                                dTotal = dTotal - Convert.ToDecimal(item.Monto);
                                oCaja.Efectivo = oCaja.Efectivo - item.Monto;
                                oCaja.Total = oCaja.Total - item.Monto;
                                break;
                            case 4: // Venta
                                dTotal = dTotal + Convert.ToDecimal(item.Monto);
                                oCaja.Efectivo = oCaja.Efectivo + item.Monto;
                                oCaja.Total = oCaja.Total + item.Monto;
                                break;
                            default:
                                dTotal = dTotal + Convert.ToDecimal(item.Monto);
                                oCaja.Efectivo = oCaja.Efectivo + item.Monto;
                                oCaja.Total = oCaja.Total + item.Monto;
                                break;
                        }
                    }
                }
            }

            txtTotal.Text = dTotal.ToString();
            listaCaja = null;
                         
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region BuscarConcepto
    /// <summary>
    /// CBendayan 29/05/2008
    /// </summary>
    public void BuscarConcepto()
    {
        try
        {
            CargaConceptos();
            List<Conceptos> listaConceptos = new List<Conceptos>();
            listaConceptos = (List<Conceptos>)Session["listaConceptos"];
            Conceptos concepto = new Conceptos();
            if (txtIdConcepto.Text.Trim() != "")
            {
                concepto.Id_Concepto = Convert.ToInt16(txtIdConcepto.Text.Trim());
            }
            concepto.Concepto = txtConcepto.Text.Trim();

            bool encontrado = false;
            if (concepto.Id_Concepto > 0)
            {
                foreach (Conceptos item in listaConceptos)
                {
                    if (item.Id_Concepto == concepto.Id_Concepto)
                    {
                        txtIdConcepto.Text = item.Id_Concepto.ToString();
                        txtConcepto.Text = item.Concepto;
                        encontrado = true;
                        break;
                    }
                    if (item.Concepto == concepto.Concepto)
                    {
                        txtIdConcepto.Text = item.Id_Concepto.ToString();
                        txtConcepto.Text = item.Concepto;
                        encontrado = true;
                        break;
                    }
                }
            }

            if (!encontrado)
            {
                txtIdConcepto.Text = "";
                txtIdConcepto.Text = "";
                #region dispararPopUp(hacePostBack)

                scriptSession = @"
            <script language=""javascript"" type=""text/javascript"">
            <!--
                function mostrarConcepto()
                {
                    var stringURL = 'BuscarConcepto.aspx?pStation=0';
                    var oINPUTS = document.getElementsByTagName (""INPUT"");
                    for(var a=0;a<oINPUTS.length; a++)
                    {
                        //Validaciones para cuando el control fue arrastrado a un PopUP (Sin MasterPage)

                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtIdConcepto')
                        {
                            //alert('U1a: &IdConcepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&IdConcepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtConcepto')
                        {  
                            //alert('U2a: &Concepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Concepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                    }
                    // alert(stringURL);
                    var newWin = window.open(stringURL, ""popup"", ""menubar=no, resizable=no, scrollbars=yes, height=550, width=550, left=100, top=100"");
                }
                mostrarConcepto();
            //-->
            </script>
            ";

                Page.ClientScript.RegisterStartupScript(this.GetType(), "ScriptA", scriptSession);
                #endregion
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region BuscarEgresos
    // busca los egresos del día
    public void BuscarEgresos()
    {
        try
        {
            DateTime dtHoy = DateTime.Now.Date;
            DateTime dtHoy2 = DateTime.Now.Date;
            Egresos egresoD = new Egresos();
            Egresos egresoH = new Egresos();
            egresoD.Fecha = dtHoy;
            dtHoy2 = dtHoy2.AddDays(1);
            egresoH.Fecha = dtHoy2;
            BMEgresos bmEgresos = new BMEgresos(Connection);
            List<Egresos> listaEgresos = new List<Egresos>();
            listaEgresos = bmEgresos.BMEgresosSearch(egresoD, egresoH);
            Session["listaEgresos"] = listaEgresos;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region GuardaEgreso
    public void GuardaEgreso(ItemCaja item)
    {
        try
        {
            BMEgresos bmEgresos = new BMEgresos(Connection);
            Egresos egreso = new Egresos();
            egreso.Concepto = item.Concepto;
            egreso.Fecha = item.Fecha;
            egreso.Id_Caja = item.Id_Caja;
            egreso.Id_Concepto = item.Id_Concepto;
            egreso.Id_Egreso = item.Id_Item;
            egreso.Id_Usuario = item.Id_Usuario;
            egreso.Monto = item.Monto;
            egreso.Observaciones = item.Observaciones;
            egreso.CCostos = Convert.ToInt16(cboCCostos.SelectedItem.Value);
            bmEgresos.BMEgresosUpdate(egreso);
            lblAccion.Text = "Egreso Actualizado";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region GuardaIngreso
    public void GuardaIngreso(ItemCaja item)
    {
        try
        {
            Ingresos ingreso = new Ingresos();
            BMIngresos bmIngresos = new BMIngresos(Connection);
            ingreso.Concepto = item.Concepto;
            ingreso.Fecha = item.Fecha;
            ingreso.Id_Caja = item.Id_Caja;
            ingreso.Id_Concepto = item.Id_Concepto;
            ingreso.Id_Ingreso = item.Id_Item;
            ingreso.Id_Usuario = item.Id_Usuario;
            ingreso.Monto = item.Monto;
            ingreso.Observaciones = item.Observaciones;
            bmIngresos.BMIngresosUpdate(ingreso);
            lblAccion.Text = "Ingreso Actualizado";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region EliminaEgreso
    public void EliminaEgreso(ItemCaja itemCaja)
    {
        try
        {
            Egresos egreso = new Egresos();
            BMEgresos bmEgresos = new BMEgresos(Connection);
            egreso.Id_Egreso = itemCaja.Id_Item;         
            bmEgresos.BMEgresosDelete(egreso);
            lblAccion.Text = "Egresos de Caja Eliminado";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region EliminaIngreso
    public void EliminaIngreso(ItemCaja itemCaja)
    {
        try
        {
            Ingresos ingreso = new Ingresos();
            BMIngresos bmIngresos = new BMIngresos(Connection);
            ingreso.Id_Ingreso = itemCaja.Id_Item;
            bmIngresos.BMIngresosDelete(ingreso);
            lblAccion.Text = "Ingresos de Caja Eliminado";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarCCostos
    private void CargarCCostos(int iAccion)
    {
        try
        {
            List<CentrosCostos> listaCCostos = new List<CentrosCostos>();
            BMCentrosCostos bmCCostos = new BMCentrosCostos(Connection);
            if (iAccion == 1)
            {
                listaCCostos = bmCCostos.BMCentrosCostosGetAllActivos();
            }
            else
            {
                listaCCostos = bmCCostos.BMCentrosCostosGetAll();
            }
            foreach (CentrosCostos ccostos in listaCCostos)
            {
                ListItem liItem = new ListItem();
                liItem.Value = ccostos.IdCentrosCostos.ToString();
                liItem.Text = ccostos.Nombre;
                cboCCostos.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion
}
